home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 326-350 / disk_332 / kryptor / kryptor.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  2KB  |  105 lines

  1. #define INTUITIONPRIVATE 1
  2. #include <exec/exec.h>
  3. #include <intuition/intuitionbase.h>
  4. #include <functions.h>
  5. #include <libraries/dosextens.h>
  6. #include <libraries/reqbase.h>
  7.  
  8. struct ReqBase            *ReqBase;
  9. struct FileRequester    MyFileReqStruct;
  10.  
  11. char                    filename[FCHARS+1],
  12.                         directoryname[DSIZE+1],
  13.                         answerarray[DSIZE+FCHARS+1];
  14.  
  15.  
  16. Anfang()
  17. {
  18.     if((ReqBase = (struct ReqBase *)OpenLibrary("req.library", NULL)) == NULL)
  19.         exit(20);
  20.  
  21.     directoryname[0] = filename[0] = answerarray[0] = 0;
  22.     MyFileReqStruct.PathName = answerarray;
  23.     MyFileReqStruct.Dir = directoryname;
  24.     MyFileReqStruct.File = filename;
  25.     MyFileReqStruct.dirnamescolor = 2;
  26.     MyFileReqStruct.devicenamescolor = 2;
  27.     MyFileReqStruct.Show[0] = 0;
  28.     MyFileReqStruct.Flags = FRQCACHINGM+FRQINFOGADGETM+FRQLOADINGM;
  29.     MyFileReqStruct.Title = "Welche Datei ver-/entschlüsseln?";
  30. }
  31.  
  32. Ende()
  33. {
  34.     CloseLibrary(ReqBase);
  35.     exit(0);
  36. }
  37.  
  38. long FileSize(name)
  39.   char *name;
  40. {    struct FileLock *fl = NULL;
  41.     struct FileInfoBlock *fib;
  42.     long size = 0L;
  43.  
  44.     if(fib = AllocMem((long)sizeof(struct FileInfoBlock), MEMF_PUBLIC+MEMF_CLEAR))
  45.     {    if(fl = Lock(name, ACCESS_READ))
  46.         {    if(Examine(fl, fib))
  47.                 size = fib->fib_Size;
  48.             UnLock(fl);
  49.         }
  50.         FreeMem(fib, (long)sizeof(struct FileInfoBlock));
  51.     }
  52.     return size;
  53. }
  54.  
  55. main()
  56. {    char *text, passwort[32];
  57.     struct FileHandle *fp;
  58.     long j, k, size;
  59.     int pwsize;
  60.     
  61.     Anfang();
  62.     setmem(passwort, 32, 0);
  63.     
  64.     do
  65.     {    text = size = NULL;
  66.         
  67.         if(FileRequester(&MyFileReqStruct))
  68.         {    if(fp = Open(answerarray, MODE_OLDFILE))
  69.             {    size = FileSize(answerarray);
  70.                 if(text = AllocMem(size, MEMF_PUBLIC+MEMF_CLEAR ))
  71.                     Read(fp, text, size);
  72.                 else
  73.                     SimpleRequest("Zu wenig freier Speicher.");
  74.                 Close(fp);
  75.             }
  76.             else
  77.                 SimpleRequest("Ich kann %s nicht öffnen.", answerarray);
  78.         }
  79.         else Ende();        /* Cancel im FR beendet Programm */
  80.         
  81.         if(text)
  82.         {    if(GetString(passwort, "Welches Paßwort?", NULL, 32L, 32L))
  83.             {    if(pwsize = strlen(passwort))
  84.                 {    for(j=0L, k=0L; j<size; j++)
  85.                     {    text[j] ^= passwort[k];
  86.                         if(++k > pwsize) k = 0L;
  87.                     }
  88.                     
  89.                     if(fp = Open(answerarray, MODE_NEWFILE))
  90.                     {    Write(fp, text, size);
  91.                         Close(fp);
  92.                         SimpleRequest("Datei %s wurde mit\nPaßwort %s behandelt.",
  93.                             answerarray, passwort);
  94.                     }
  95.                     else
  96.                         SimpleRequest("Ich kann %s nicht überschreiben.", answerarray);
  97.                 }
  98.             }
  99.             
  100.             FreeMem(text, size);
  101.         }
  102.         
  103.     } while(1);
  104. }
  105.